Cortex M4 SysTick 详解 您所在的位置:网站首页 systick handler进不去 Cortex M4 SysTick 详解

Cortex M4 SysTick 详解

2023-09-04 13:17| 来源: 网络整理| 查看: 265

Cortex M4 提供了 SysTick 功能,SysTick 是一个 24bits 定时器,可以通过简单的编程提供一个周期中断,常用于作为操作系统的”心跳“。

一、寄存器

1、STK_CTRL

2、STK_LOAD

3、STK_VAL

 二、时钟源

SysTick 可选择两种时钟源,通过寄存器 STK_CTRL 的 CLKSOURCE 位来选择,‘0’ 表示时钟源为 AHB(HCLK)的 1/8,'1' 表示时钟源为 AHB(HCLK)。

三、重装载与中断

通过寄存器 STK_CTRL 的 ENABLE 置 ‘1' 可以启动 SysTick。启动后 SysTick 值在每个时钟周期减一,当值为 ‘0’ 时会将寄存器 STK_CTRL 的 COUNTFLAG 置位。若此时使能了 SysTick 中断则会触发中断。可以通过将寄存器 STK_CTRL 的 TICKINT 位置 ‘1’ 使能 SysTick 中断。SysTick 在计数到 0 的下一个时钟周期会从 STK_LOAD 寄存器中加载值。

四、周期中断

使能 SysTick 并打开中断后会产生周期中断,周期频率与时钟源与 STK_LOAD 的值有关,公式如下:

F = FSRC / (STK_LOAD + 1)

代码如下:

uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); /* 重装在值是否有效(24位)*/ } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* 设置重装载值 */ NVIC_SetPriority (SysTick_IRQn, (1UL VAL = 0UL; /* 清空计数器 */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | /* 设置 SysTick 源为 AHB(HCLK) */ SysTick_CTRL_TICKINT_Msk | /* 使能 SysTick 中断 */ SysTick_CTRL_ENABLE_Msk; /* 启动 SysTick */ return (0UL); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有